# 全量导入
import register
# 全量导入2
from user_manage import *
# 局部导入
from login  import login

# 异包导入
from tp.test import test
# 异包导入2
from tp import test2
# 异包导入3（依赖于__init__.py的__all__=['test3']）
# __all__ 是针对模块公开接口的一种约定，以提供了”白名单“的形式暴露接口。如果定义了__all__，其他文件中使用from xxx import *导入该文件时，只会导入 __all__ 列出的成员
# __all__ 仅对于使用from module import * 这种情况适用。
from tp import *




"""
我们的python在导入一个模块的时候，会把我们的模块.py文件执行一遍，然后生成一个模块对象，
模块中我们定义的函数、变量、类会添加到这个模块对象的属性里面：
这就是为什么我们可以通过test.hello()，因为hello()是test的一个属性.
"""

if __name__ == '__main__':
    # group1
    login()
    register.register()
    user_manage()

    # group2
    test()
    test2.test2()
    test3.test3()

    # 动态引包
    # td1.testd1()
    os_obj = __import__("os")
    print(os_obj.getcwd())

    # 此处的td，指的是包，不是具体的模块
    td_obj=__import__('td0.td1')
    td_method=getattr(td_obj.td1,'testd1')
    # td_obj.td1.testd1()
    resd=td_method()
    print(resd)

    import importlib
    myos=importlib.import_module("os")
    print(myos.getcwd())
